Skip to content

Conversation

@bergarces
Copy link
Contributor

@bergarces bergarces commented Oct 26, 2025

Explanation

  • Updates DeFiPositionsController to only update the selected EVM account
  • Adds timeout & retry mechanism
  • Fixes issue with DeFi polling starting before onboarding due to subscription to KeyringController:unlocked event

Draft PR for extension: MetaMask/metamask-extension#37215
Draft PR for mobile: MetaMask/metamask-mobile#21657

References

Related to https://consensyssoftware.atlassian.net/browse/ASSETS-1238

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed, highlighting breaking changes as necessary
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

Note

Updates DeFi positions to only refresh the selected EVM address, gates updates on relevant events, and adds an 8s timeout with a single retry to the API fetch.

  • DeFiPositionsController
    • Refreshes DeFi positions for only the selected EVM account (_executePoll, #updateAccountPositions).
    • Replaces AccountsController dependencies with AccountTreeController:getAccountsFromSelectedAccountGroup to derive selected EVM address.
    • Event changes:
      • Stops polling on KeyringController:lock (unchanged).
      • Removes KeyringController:unlock and AccountsController:accountAdded listeners.
      • Adds AccountTreeController:selectedAccountGroupChange to refresh selected address.
      • TransactionController:transactionConfirmed now updates only if it matches the selected address.
  • Fetch behavior
    • fetch-positions: wraps API call with timeoutWithRetry (8s timeout, 1 retry).
    • Adds utils/timeout-with-retry with unit tests.
  • Tests
    • Update unit tests to new selected-account-only behavior and new events.
  • Changelog
    • Documents breaking changes to events/behavior and new timeout+retry.

Written by Cursor Bugbot for commit fe03293. This will update automatically on new commits. Configure here.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@bergarces
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "1.6.0-preview-b6fecd10",
  "@metamask-previews/accounts-controller": "33.2.0-preview-b6fecd10",
  "@metamask-previews/address-book-controller": "6.2.1-preview-b6fecd10",
  "@metamask-previews/announcement-controller": "7.1.1-preview-b6fecd10",
  "@metamask-previews/app-metadata-controller": "1.1.1-preview-b6fecd10",
  "@metamask-previews/approval-controller": "7.2.1-preview-b6fecd10",
  "@metamask-previews/assets-controllers": "83.1.0-preview-b6fecd10",
  "@metamask-previews/base-controller": "8.4.2-preview-b6fecd10",
  "@metamask-previews/bridge-controller": "55.0.0-preview-b6fecd10",
  "@metamask-previews/bridge-status-controller": "55.0.0-preview-b6fecd10",
  "@metamask-previews/build-utils": "3.0.4-preview-b6fecd10",
  "@metamask-previews/chain-agnostic-permission": "1.2.1-preview-b6fecd10",
  "@metamask-previews/composable-controller": "11.1.1-preview-b6fecd10",
  "@metamask-previews/controller-utils": "11.14.1-preview-b6fecd10",
  "@metamask-previews/core-backend": "3.0.0-preview-b6fecd10",
  "@metamask-previews/delegation-controller": "0.8.1-preview-b6fecd10",
  "@metamask-previews/earn-controller": "8.0.2-preview-b6fecd10",
  "@metamask-previews/eip-5792-middleware": "1.2.4-preview-b6fecd10",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-b6fecd10",
  "@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-b6fecd10",
  "@metamask-previews/ens-controller": "17.1.1-preview-b6fecd10",
  "@metamask-previews/error-reporting-service": "2.2.2-preview-b6fecd10",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-b6fecd10",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-b6fecd10",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-b6fecd10",
  "@metamask-previews/foundryup": "1.0.1-preview-b6fecd10",
  "@metamask-previews/gas-fee-controller": "24.1.1-preview-b6fecd10",
  "@metamask-previews/gator-permissions-controller": "0.2.2-preview-b6fecd10",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-b6fecd10",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-b6fecd10",
  "@metamask-previews/keyring-controller": "23.2.0-preview-b6fecd10",
  "@metamask-previews/logging-controller": "6.1.1-preview-b6fecd10",
  "@metamask-previews/message-manager": "13.0.2-preview-b6fecd10",
  "@metamask-previews/messenger": "0.3.0-preview-b6fecd10",
  "@metamask-previews/multichain-account-service": "1.6.2-preview-b6fecd10",
  "@metamask-previews/multichain-api-middleware": "1.2.2-preview-b6fecd10",
  "@metamask-previews/multichain-network-controller": "1.0.2-preview-b6fecd10",
  "@metamask-previews/multichain-transactions-controller": "5.1.1-preview-b6fecd10",
  "@metamask-previews/name-controller": "8.1.1-preview-b6fecd10",
  "@metamask-previews/network-controller": "24.3.1-preview-b6fecd10",
  "@metamask-previews/network-enablement-controller": "2.1.2-preview-b6fecd10",
  "@metamask-previews/notification-services-controller": "18.3.1-preview-b6fecd10",
  "@metamask-previews/permission-controller": "11.1.1-preview-b6fecd10",
  "@metamask-previews/permission-log-controller": "4.1.1-preview-b6fecd10",
  "@metamask-previews/phishing-controller": "14.1.3-preview-b6fecd10",
  "@metamask-previews/polling-controller": "14.0.2-preview-b6fecd10",
  "@metamask-previews/preferences-controller": "20.1.1-preview-b6fecd10",
  "@metamask-previews/profile-sync-controller": "25.1.2-preview-b6fecd10",
  "@metamask-previews/rate-limit-controller": "6.1.1-preview-b6fecd10",
  "@metamask-previews/remote-feature-flag-controller": "1.9.1-preview-b6fecd10",
  "@metamask-previews/sample-controllers": "2.0.2-preview-b6fecd10",
  "@metamask-previews/seedless-onboarding-controller": "4.1.1-preview-b6fecd10",
  "@metamask-previews/selected-network-controller": "24.0.2-preview-b6fecd10",
  "@metamask-previews/shield-controller": "0.4.0-preview-b6fecd10",
  "@metamask-previews/signature-controller": "34.0.2-preview-b6fecd10",
  "@metamask-previews/subscription-controller": "2.1.0-preview-b6fecd10",
  "@metamask-previews/token-search-discovery-controller": "3.5.1-preview-b6fecd10",
  "@metamask-previews/transaction-controller": "60.10.0-preview-b6fecd10",
  "@metamask-previews/user-operation-controller": "39.2.1-preview-b6fecd10"
}

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "1.6.0-preview-0dc4ff17",
  "@metamask-previews/accounts-controller": "33.2.0-preview-0dc4ff17",
  "@metamask-previews/address-book-controller": "6.2.1-preview-0dc4ff17",
  "@metamask-previews/announcement-controller": "7.1.1-preview-0dc4ff17",
  "@metamask-previews/app-metadata-controller": "1.1.1-preview-0dc4ff17",
  "@metamask-previews/approval-controller": "7.2.1-preview-0dc4ff17",
  "@metamask-previews/assets-controllers": "83.1.0-preview-0dc4ff17",
  "@metamask-previews/base-controller": "8.4.2-preview-0dc4ff17",
  "@metamask-previews/bridge-controller": "55.0.0-preview-0dc4ff17",
  "@metamask-previews/bridge-status-controller": "55.0.0-preview-0dc4ff17",
  "@metamask-previews/build-utils": "3.0.4-preview-0dc4ff17",
  "@metamask-previews/chain-agnostic-permission": "1.2.1-preview-0dc4ff17",
  "@metamask-previews/composable-controller": "11.1.1-preview-0dc4ff17",
  "@metamask-previews/controller-utils": "11.14.1-preview-0dc4ff17",
  "@metamask-previews/core-backend": "3.0.0-preview-0dc4ff17",
  "@metamask-previews/delegation-controller": "0.8.1-preview-0dc4ff17",
  "@metamask-previews/earn-controller": "8.0.2-preview-0dc4ff17",
  "@metamask-previews/eip-5792-middleware": "1.2.4-preview-0dc4ff17",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-0dc4ff17",
  "@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-0dc4ff17",
  "@metamask-previews/ens-controller": "17.1.1-preview-0dc4ff17",
  "@metamask-previews/error-reporting-service": "2.2.2-preview-0dc4ff17",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-0dc4ff17",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-0dc4ff17",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-0dc4ff17",
  "@metamask-previews/foundryup": "1.0.1-preview-0dc4ff17",
  "@metamask-previews/gas-fee-controller": "24.1.1-preview-0dc4ff17",
  "@metamask-previews/gator-permissions-controller": "0.2.2-preview-0dc4ff17",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-0dc4ff17",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-0dc4ff17",
  "@metamask-previews/keyring-controller": "23.2.0-preview-0dc4ff17",
  "@metamask-previews/logging-controller": "6.1.1-preview-0dc4ff17",
  "@metamask-previews/message-manager": "13.0.2-preview-0dc4ff17",
  "@metamask-previews/messenger": "0.3.0-preview-0dc4ff17",
  "@metamask-previews/multichain-account-service": "1.6.2-preview-0dc4ff17",
  "@metamask-previews/multichain-api-middleware": "1.2.2-preview-0dc4ff17",
  "@metamask-previews/multichain-network-controller": "1.0.2-preview-0dc4ff17",
  "@metamask-previews/multichain-transactions-controller": "5.1.1-preview-0dc4ff17",
  "@metamask-previews/name-controller": "8.1.1-preview-0dc4ff17",
  "@metamask-previews/network-controller": "24.3.1-preview-0dc4ff17",
  "@metamask-previews/network-enablement-controller": "2.1.2-preview-0dc4ff17",
  "@metamask-previews/notification-services-controller": "18.3.1-preview-0dc4ff17",
  "@metamask-previews/permission-controller": "11.1.1-preview-0dc4ff17",
  "@metamask-previews/permission-log-controller": "4.1.1-preview-0dc4ff17",
  "@metamask-previews/phishing-controller": "14.1.3-preview-0dc4ff17",
  "@metamask-previews/polling-controller": "14.0.2-preview-0dc4ff17",
  "@metamask-previews/preferences-controller": "20.1.1-preview-0dc4ff17",
  "@metamask-previews/profile-sync-controller": "25.1.2-preview-0dc4ff17",
  "@metamask-previews/rate-limit-controller": "6.1.1-preview-0dc4ff17",
  "@metamask-previews/remote-feature-flag-controller": "1.9.1-preview-0dc4ff17",
  "@metamask-previews/sample-controllers": "2.0.2-preview-0dc4ff17",
  "@metamask-previews/seedless-onboarding-controller": "4.1.1-preview-0dc4ff17",
  "@metamask-previews/selected-network-controller": "24.0.2-preview-0dc4ff17",
  "@metamask-previews/shield-controller": "0.4.0-preview-0dc4ff17",
  "@metamask-previews/signature-controller": "34.0.2-preview-0dc4ff17",
  "@metamask-previews/subscription-controller": "2.1.0-preview-0dc4ff17",
  "@metamask-previews/token-search-discovery-controller": "3.5.1-preview-0dc4ff17",
  "@metamask-previews/transaction-controller": "60.10.0-preview-0dc4ff17",
  "@metamask-previews/user-operation-controller": "39.2.1-preview-0dc4ff17"
}

@bergarces
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "1.6.0-preview-6622ae9c",
  "@metamask-previews/accounts-controller": "33.2.0-preview-6622ae9c",
  "@metamask-previews/address-book-controller": "6.2.1-preview-6622ae9c",
  "@metamask-previews/announcement-controller": "7.1.1-preview-6622ae9c",
  "@metamask-previews/app-metadata-controller": "1.1.1-preview-6622ae9c",
  "@metamask-previews/approval-controller": "7.2.1-preview-6622ae9c",
  "@metamask-previews/assets-controllers": "83.1.0-preview-6622ae9c",
  "@metamask-previews/base-controller": "8.4.2-preview-6622ae9c",
  "@metamask-previews/bridge-controller": "55.0.0-preview-6622ae9c",
  "@metamask-previews/bridge-status-controller": "55.0.0-preview-6622ae9c",
  "@metamask-previews/build-utils": "3.0.4-preview-6622ae9c",
  "@metamask-previews/chain-agnostic-permission": "1.2.1-preview-6622ae9c",
  "@metamask-previews/composable-controller": "11.1.1-preview-6622ae9c",
  "@metamask-previews/controller-utils": "11.14.1-preview-6622ae9c",
  "@metamask-previews/core-backend": "3.0.0-preview-6622ae9c",
  "@metamask-previews/delegation-controller": "0.8.1-preview-6622ae9c",
  "@metamask-previews/earn-controller": "8.0.2-preview-6622ae9c",
  "@metamask-previews/eip-5792-middleware": "1.2.4-preview-6622ae9c",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-6622ae9c",
  "@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-6622ae9c",
  "@metamask-previews/ens-controller": "17.1.1-preview-6622ae9c",
  "@metamask-previews/error-reporting-service": "2.2.2-preview-6622ae9c",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-6622ae9c",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-6622ae9c",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-6622ae9c",
  "@metamask-previews/foundryup": "1.0.1-preview-6622ae9c",
  "@metamask-previews/gas-fee-controller": "24.1.1-preview-6622ae9c",
  "@metamask-previews/gator-permissions-controller": "0.2.2-preview-6622ae9c",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-6622ae9c",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-6622ae9c",
  "@metamask-previews/keyring-controller": "23.2.0-preview-6622ae9c",
  "@metamask-previews/logging-controller": "6.1.1-preview-6622ae9c",
  "@metamask-previews/message-manager": "13.0.2-preview-6622ae9c",
  "@metamask-previews/messenger": "0.3.0-preview-6622ae9c",
  "@metamask-previews/multichain-account-service": "1.6.2-preview-6622ae9c",
  "@metamask-previews/multichain-api-middleware": "1.2.2-preview-6622ae9c",
  "@metamask-previews/multichain-network-controller": "1.0.2-preview-6622ae9c",
  "@metamask-previews/multichain-transactions-controller": "5.1.1-preview-6622ae9c",
  "@metamask-previews/name-controller": "8.1.1-preview-6622ae9c",
  "@metamask-previews/network-controller": "24.3.1-preview-6622ae9c",
  "@metamask-previews/network-enablement-controller": "2.1.2-preview-6622ae9c",
  "@metamask-previews/notification-services-controller": "18.3.1-preview-6622ae9c",
  "@metamask-previews/permission-controller": "11.1.1-preview-6622ae9c",
  "@metamask-previews/permission-log-controller": "4.1.1-preview-6622ae9c",
  "@metamask-previews/phishing-controller": "14.1.3-preview-6622ae9c",
  "@metamask-previews/polling-controller": "14.0.2-preview-6622ae9c",
  "@metamask-previews/preferences-controller": "20.1.1-preview-6622ae9c",
  "@metamask-previews/profile-sync-controller": "25.1.2-preview-6622ae9c",
  "@metamask-previews/rate-limit-controller": "6.1.1-preview-6622ae9c",
  "@metamask-previews/remote-feature-flag-controller": "1.9.1-preview-6622ae9c",
  "@metamask-previews/sample-controllers": "2.0.2-preview-6622ae9c",
  "@metamask-previews/seedless-onboarding-controller": "4.1.1-preview-6622ae9c",
  "@metamask-previews/selected-network-controller": "24.0.2-preview-6622ae9c",
  "@metamask-previews/shield-controller": "0.4.0-preview-6622ae9c",
  "@metamask-previews/signature-controller": "34.0.2-preview-6622ae9c",
  "@metamask-previews/subscription-controller": "2.1.0-preview-6622ae9c",
  "@metamask-previews/token-search-discovery-controller": "3.5.1-preview-6622ae9c",
  "@metamask-previews/transaction-controller": "60.10.0-preview-6622ae9c",
  "@metamask-previews/user-operation-controller": "39.2.1-preview-6622ae9c"
}

cursor[bot]

This comment was marked as outdated.

@bergarces
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "1.6.0-preview-1181d67c",
  "@metamask-previews/accounts-controller": "33.2.0-preview-1181d67c",
  "@metamask-previews/address-book-controller": "6.2.1-preview-1181d67c",
  "@metamask-previews/announcement-controller": "7.1.1-preview-1181d67c",
  "@metamask-previews/app-metadata-controller": "1.1.1-preview-1181d67c",
  "@metamask-previews/approval-controller": "7.2.1-preview-1181d67c",
  "@metamask-previews/assets-controllers": "83.1.0-preview-1181d67c",
  "@metamask-previews/base-controller": "8.4.2-preview-1181d67c",
  "@metamask-previews/bridge-controller": "55.0.0-preview-1181d67c",
  "@metamask-previews/bridge-status-controller": "55.0.0-preview-1181d67c",
  "@metamask-previews/build-utils": "3.0.4-preview-1181d67c",
  "@metamask-previews/chain-agnostic-permission": "1.2.1-preview-1181d67c",
  "@metamask-previews/composable-controller": "11.1.1-preview-1181d67c",
  "@metamask-previews/controller-utils": "11.14.1-preview-1181d67c",
  "@metamask-previews/core-backend": "3.0.0-preview-1181d67c",
  "@metamask-previews/delegation-controller": "0.8.1-preview-1181d67c",
  "@metamask-previews/earn-controller": "8.0.2-preview-1181d67c",
  "@metamask-previews/eip-5792-middleware": "1.2.4-preview-1181d67c",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-1181d67c",
  "@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-1181d67c",
  "@metamask-previews/ens-controller": "17.1.1-preview-1181d67c",
  "@metamask-previews/error-reporting-service": "2.2.2-preview-1181d67c",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-1181d67c",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-1181d67c",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-1181d67c",
  "@metamask-previews/foundryup": "1.0.1-preview-1181d67c",
  "@metamask-previews/gas-fee-controller": "24.1.1-preview-1181d67c",
  "@metamask-previews/gator-permissions-controller": "0.2.2-preview-1181d67c",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-1181d67c",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-1181d67c",
  "@metamask-previews/keyring-controller": "23.2.0-preview-1181d67c",
  "@metamask-previews/logging-controller": "6.1.1-preview-1181d67c",
  "@metamask-previews/message-manager": "13.0.2-preview-1181d67c",
  "@metamask-previews/messenger": "0.3.0-preview-1181d67c",
  "@metamask-previews/multichain-account-service": "1.6.2-preview-1181d67c",
  "@metamask-previews/multichain-api-middleware": "1.2.2-preview-1181d67c",
  "@metamask-previews/multichain-network-controller": "1.0.2-preview-1181d67c",
  "@metamask-previews/multichain-transactions-controller": "5.1.1-preview-1181d67c",
  "@metamask-previews/name-controller": "8.1.1-preview-1181d67c",
  "@metamask-previews/network-controller": "24.3.1-preview-1181d67c",
  "@metamask-previews/network-enablement-controller": "2.1.2-preview-1181d67c",
  "@metamask-previews/notification-services-controller": "18.3.1-preview-1181d67c",
  "@metamask-previews/permission-controller": "11.1.1-preview-1181d67c",
  "@metamask-previews/permission-log-controller": "4.1.1-preview-1181d67c",
  "@metamask-previews/phishing-controller": "14.1.3-preview-1181d67c",
  "@metamask-previews/polling-controller": "14.0.2-preview-1181d67c",
  "@metamask-previews/preferences-controller": "20.1.1-preview-1181d67c",
  "@metamask-previews/profile-sync-controller": "25.1.2-preview-1181d67c",
  "@metamask-previews/rate-limit-controller": "6.1.1-preview-1181d67c",
  "@metamask-previews/remote-feature-flag-controller": "1.9.1-preview-1181d67c",
  "@metamask-previews/sample-controllers": "2.0.2-preview-1181d67c",
  "@metamask-previews/seedless-onboarding-controller": "4.1.1-preview-1181d67c",
  "@metamask-previews/selected-network-controller": "24.0.2-preview-1181d67c",
  "@metamask-previews/shield-controller": "0.4.0-preview-1181d67c",
  "@metamask-previews/signature-controller": "34.0.2-preview-1181d67c",
  "@metamask-previews/subscription-controller": "2.1.0-preview-1181d67c",
  "@metamask-previews/token-search-discovery-controller": "3.5.1-preview-1181d67c",
  "@metamask-previews/transaction-controller": "60.10.0-preview-1181d67c",
  "@metamask-previews/user-operation-controller": "39.2.1-preview-1181d67c"
}

@bergarces bergarces requested a review from a team as a code owner October 26, 2025 21:19
@bergarces
Copy link
Contributor Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "1.6.0-preview-71feeb92",
  "@metamask-previews/accounts-controller": "33.2.0-preview-71feeb92",
  "@metamask-previews/address-book-controller": "6.2.1-preview-71feeb92",
  "@metamask-previews/announcement-controller": "7.1.1-preview-71feeb92",
  "@metamask-previews/app-metadata-controller": "1.1.1-preview-71feeb92",
  "@metamask-previews/approval-controller": "7.2.1-preview-71feeb92",
  "@metamask-previews/assets-controllers": "83.1.0-preview-71feeb92",
  "@metamask-previews/base-controller": "8.4.2-preview-71feeb92",
  "@metamask-previews/bridge-controller": "55.0.0-preview-71feeb92",
  "@metamask-previews/bridge-status-controller": "55.0.0-preview-71feeb92",
  "@metamask-previews/build-utils": "3.0.4-preview-71feeb92",
  "@metamask-previews/chain-agnostic-permission": "1.2.1-preview-71feeb92",
  "@metamask-previews/composable-controller": "11.1.1-preview-71feeb92",
  "@metamask-previews/controller-utils": "11.14.1-preview-71feeb92",
  "@metamask-previews/core-backend": "3.0.0-preview-71feeb92",
  "@metamask-previews/delegation-controller": "0.8.1-preview-71feeb92",
  "@metamask-previews/earn-controller": "8.0.2-preview-71feeb92",
  "@metamask-previews/eip-5792-middleware": "1.2.4-preview-71feeb92",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-71feeb92",
  "@metamask-previews/eip1193-permission-middleware": "1.0.1-preview-71feeb92",
  "@metamask-previews/ens-controller": "17.1.1-preview-71feeb92",
  "@metamask-previews/error-reporting-service": "2.2.2-preview-71feeb92",
  "@metamask-previews/eth-block-tracker": "14.0.0-preview-71feeb92",
  "@metamask-previews/eth-json-rpc-middleware": "21.0.0-preview-71feeb92",
  "@metamask-previews/eth-json-rpc-provider": "5.0.1-preview-71feeb92",
  "@metamask-previews/foundryup": "1.0.1-preview-71feeb92",
  "@metamask-previews/gas-fee-controller": "24.1.1-preview-71feeb92",
  "@metamask-previews/gator-permissions-controller": "0.2.2-preview-71feeb92",
  "@metamask-previews/json-rpc-engine": "10.1.1-preview-71feeb92",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-71feeb92",
  "@metamask-previews/keyring-controller": "23.2.0-preview-71feeb92",
  "@metamask-previews/logging-controller": "6.1.1-preview-71feeb92",
  "@metamask-previews/message-manager": "13.0.2-preview-71feeb92",
  "@metamask-previews/messenger": "0.3.0-preview-71feeb92",
  "@metamask-previews/multichain-account-service": "1.6.2-preview-71feeb92",
  "@metamask-previews/multichain-api-middleware": "1.2.2-preview-71feeb92",
  "@metamask-previews/multichain-network-controller": "1.0.2-preview-71feeb92",
  "@metamask-previews/multichain-transactions-controller": "5.1.1-preview-71feeb92",
  "@metamask-previews/name-controller": "8.1.1-preview-71feeb92",
  "@metamask-previews/network-controller": "24.3.1-preview-71feeb92",
  "@metamask-previews/network-enablement-controller": "2.1.2-preview-71feeb92",
  "@metamask-previews/notification-services-controller": "18.3.1-preview-71feeb92",
  "@metamask-previews/permission-controller": "11.1.1-preview-71feeb92",
  "@metamask-previews/permission-log-controller": "4.1.1-preview-71feeb92",
  "@metamask-previews/phishing-controller": "14.1.3-preview-71feeb92",
  "@metamask-previews/polling-controller": "14.0.2-preview-71feeb92",
  "@metamask-previews/preferences-controller": "20.1.1-preview-71feeb92",
  "@metamask-previews/profile-sync-controller": "25.1.2-preview-71feeb92",
  "@metamask-previews/rate-limit-controller": "6.1.1-preview-71feeb92",
  "@metamask-previews/remote-feature-flag-controller": "1.9.1-preview-71feeb92",
  "@metamask-previews/sample-controllers": "2.0.2-preview-71feeb92",
  "@metamask-previews/seedless-onboarding-controller": "4.1.1-preview-71feeb92",
  "@metamask-previews/selected-network-controller": "24.0.2-preview-71feeb92",
  "@metamask-previews/shield-controller": "0.4.0-preview-71feeb92",
  "@metamask-previews/signature-controller": "34.0.2-preview-71feeb92",
  "@metamask-previews/subscription-controller": "2.1.0-preview-71feeb92",
  "@metamask-previews/token-search-discovery-controller": "3.5.1-preview-71feeb92",
  "@metamask-previews/transaction-controller": "60.10.0-preview-71feeb92",
  "@metamask-previews/user-operation-controller": "39.2.1-preview-71feeb92"
}

salimtb
salimtb previously approved these changes Oct 27, 2025
@bergarces bergarces force-pushed the defi-controller-changes branch from 4f7407c to a3456b1 Compare October 27, 2025 12:06
salimtb
salimtb previously approved these changes Oct 27, 2025
salimtb
salimtb previously approved these changes Oct 27, 2025
@bergarces bergarces enabled auto-merge October 27, 2025 15:33
@bergarces bergarces requested a review from a team as a code owner October 31, 2025 12:42
auto-merge was automatically disabled November 3, 2025 15:02

Merge commits are not allowed on this repository

@bergarces bergarces merged commit 8bfd3f5 into main Nov 3, 2025
259 checks passed
@bergarces bergarces deleted the defi-controller-changes branch November 3, 2025 15:15
juanmigdr pushed a commit that referenced this pull request Nov 3, 2025
<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->

- Updates DeFiPositionsController to only update the selected EVM
account
- Adds timeout & retry mechanism
- Fixes issue with DeFi polling starting before onboarding due to
subscription to `KeyringController:unlocked` event

Draft PR for extension:
MetaMask/metamask-extension#37215
Draft PR for mobile:
MetaMask/metamask-mobile#21657

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

Related to https://consensyssoftware.atlassian.net/browse/ASSETS-1238

- [X] I've updated the test suite for new or updated code as appropriate
- [X] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [X] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs),
highlighting breaking changes as necessary
- [X] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Updates DeFi positions to only refresh the selected EVM address, gates
updates on relevant events, and adds an 8s timeout with a single retry
to the API fetch.
>
> - **DeFiPositionsController**
> - Refreshes DeFi positions for only the selected EVM account
(`_executePoll`, `#updateAccountPositions`).
> - Replaces AccountsController dependencies with
`AccountTreeController:getAccountsFromSelectedAccountGroup` to derive
selected EVM address.
>   - Event changes:
>     - Stops polling on `KeyringController:lock` (unchanged).
> - Removes `KeyringController:unlock` and
`AccountsController:accountAdded` listeners.
> - Adds `AccountTreeController:selectedAccountGroupChange` to refresh
selected address.
> - `TransactionController:transactionConfirmed` now updates only if it
matches the selected address.
> - **Fetch behavior**
> - `fetch-positions`: wraps API call with `timeoutWithRetry` (8s
timeout, 1 retry).
>   - Adds `utils/timeout-with-retry` with unit tests.
> - **Tests**
> - Update unit tests to new selected-account-only behavior and new
events.
> - **Changelog**
> - Documents breaking changes to events/behavior and new timeout+retry.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
fe03293. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants